Архитектура Пульт.Онлайн построена по микросервисной модели:
- Сервисы — это исполняемые файлы в папке
services/<имя_сервиса>
в директории установки.
- Каждый сервис выполняет отдельную функцию (например, опрос Modbus-узлов, хранение трендов, обработка тревог).
- Сервисы взаимодействуют между собой через UNIX-сокеты или TCP/Websocket по протоколу
JSONRPC2.0
.
Ключевые сервисы
Сервер (server):
- Веб-интерфейс для операторов и редактора проектов.
- Хранение исторических данных.
- Обработка аварий и коммуникация со шлюзами.
- Опрос полевых устройств в локальной сети (Modbus, OPC UA и др.).
Ядро (core):
- Корневой драйвер переменных, работающий с драйверами полевых устройств и драйверами виртуальных переменных.
- С данным сервисом работают все сервисы, которым требуется подписка на переменные
Драйверы полевых устройств:
- Сервисы: drv_mbtcp, drv_mbrtu, drv_mbrot, drv_bacnet, drv_gpsd, drv_mqtt, drv_snmp, drv_http, drv_cmd, drv_cam, drv_opcua
- Обеспечивают связь с полевыми устройствами по разным протоколам
Драйверы виртуальных переменных:
- Сервисы: drv_virt, drv_alarm
- Драйверы работают с виртуальными и тревожными переменными
Общая информация
- Все файлы сервиса хранятся в его рабочей папке:
services/<имя_сервиса>
.
- Все сервисы автоматически запускаются и управляются сервисом
supervisor
.
- Ручной запуск/остановка выполняется скриптами
./start
, ./stop
, ./restart
из папки установки.
- Конфигурация каждого сервиса хранится в файле
config.cfg
.
- Коды и описания ошибок, генерируемых сервисом, хранятся в файле
errors.json
.
- Сервисы, которые взаимодействуют с другими сервисами, имеют файл
services.json
с настройками подключения.
- Для внутреннего обмена данными используются UNIX-сокеты.
- Внешний API доступен через WebSocket.